package cn.iocoder.yudao.module.reading.dal.mysql.community;

import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.reading.dal.dataobject.community.CommunityCommentDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

/**
 * 社区评论 Mapper
 *
 * @author 芋道源码
 */
@Mapper
public interface CommunityCommentMapper extends BaseMapperX<CommunityCommentDO> {

    /**
     * 分页查询帖子的评论列表
     */
    default PageResult<CommunityCommentDO> selectPageByPostId(Long postId, PageParam pageParam) {
        return selectPage(pageParam, new LambdaQueryWrapperX<CommunityCommentDO>()
                .eq(CommunityCommentDO::getPostId, postId)
                .eq(CommunityCommentDO::getStatus, 1) // 只查询正常状态的评论
                .orderByAsc(CommunityCommentDO::getCreateTime)); // 按创建时间正序
    }

    /**
     * 增加评论点赞数
     */
    @Update("UPDATE community_comments SET like_count = like_count + #{increment} WHERE id = #{commentId}")
    void updateLikeCount(@Param("commentId") Long commentId, @Param("increment") Integer increment);

    /**
     * 增加评论回复数
     */
    @Update("UPDATE community_comments SET reply_count = reply_count + #{increment} WHERE id = #{commentId}")
    void updateReplyCount(@Param("commentId") Long commentId, @Param("increment") Integer increment);

}
